/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl;

import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

import org.open.oasis.docs.wsbpel._2._0.process.abstract_.AbstractPackage;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TAssign;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TBooleanExpr;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TCompensate;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TCompensateScope;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TElseif;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TEmpty;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TExit;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TExtensionActivity;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TFlow;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TForEach;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TIf;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TInvoke;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TOpaqueActivity;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TPick;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TReceive;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TRepeatUntil;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TReply;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TRethrow;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TScope;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TSequence;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TThrow;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TValidate;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TWait;
import org.open.oasis.docs.wsbpel._2._0.process.abstract_.TWhile;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>TElseif</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getCondition <em>Condition</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getAssign <em>Assign</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getCompensate <em>Compensate</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getCompensateScope <em>Compensate Scope</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getEmpty <em>Empty</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getExit <em>Exit</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getExtensionActivity <em>Extension Activity</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getFlow <em>Flow</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getForEach <em>For Each</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getIf <em>If</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getInvoke <em>Invoke</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getPick <em>Pick</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getReceive <em>Receive</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getRepeatUntil <em>Repeat Until</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getReply <em>Reply</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getRethrow <em>Rethrow</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getScope <em>Scope</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getSequence <em>Sequence</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getThrow <em>Throw</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getValidate <em>Validate</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getWait <em>Wait</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getWhile <em>While</em>}</li>
 *   <li>{@link org.open.oasis.docs.wsbpel._2._0.process.abstract_.impl.TElseifImpl#getOpaqueActivity <em>Opaque Activity</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class TElseifImpl extends TExtensibleElementsImpl implements TElseif {
	/**
	 * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCondition()
	 * @generated
	 * @ordered
	 */
	protected TBooleanExpr condition;

	/**
	 * The cached value of the '{@link #getAssign() <em>Assign</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getAssign()
	 * @generated
	 * @ordered
	 */
	protected TAssign assign;

	/**
	 * The cached value of the '{@link #getCompensate() <em>Compensate</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCompensate()
	 * @generated
	 * @ordered
	 */
	protected TCompensate compensate;

	/**
	 * The cached value of the '{@link #getCompensateScope() <em>Compensate Scope</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCompensateScope()
	 * @generated
	 * @ordered
	 */
	protected TCompensateScope compensateScope;

	/**
	 * The cached value of the '{@link #getEmpty() <em>Empty</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getEmpty()
	 * @generated
	 * @ordered
	 */
	protected TEmpty empty;

	/**
	 * The cached value of the '{@link #getExit() <em>Exit</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getExit()
	 * @generated
	 * @ordered
	 */
	protected TExit exit;

	/**
	 * The cached value of the '{@link #getExtensionActivity() <em>Extension Activity</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getExtensionActivity()
	 * @generated
	 * @ordered
	 */
	protected TExtensionActivity extensionActivity;

	/**
	 * The cached value of the '{@link #getFlow() <em>Flow</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFlow()
	 * @generated
	 * @ordered
	 */
	protected TFlow flow;

	/**
	 * The cached value of the '{@link #getForEach() <em>For Each</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getForEach()
	 * @generated
	 * @ordered
	 */
	protected TForEach forEach;

	/**
	 * The cached value of the '{@link #getIf() <em>If</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getIf()
	 * @generated
	 * @ordered
	 */
	protected TIf if_;

	/**
	 * The cached value of the '{@link #getInvoke() <em>Invoke</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getInvoke()
	 * @generated
	 * @ordered
	 */
	protected TInvoke invoke;

	/**
	 * The cached value of the '{@link #getPick() <em>Pick</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPick()
	 * @generated
	 * @ordered
	 */
	protected TPick pick;

	/**
	 * The cached value of the '{@link #getReceive() <em>Receive</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getReceive()
	 * @generated
	 * @ordered
	 */
	protected TReceive receive;

	/**
	 * The cached value of the '{@link #getRepeatUntil() <em>Repeat Until</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRepeatUntil()
	 * @generated
	 * @ordered
	 */
	protected TRepeatUntil repeatUntil;

	/**
	 * The cached value of the '{@link #getReply() <em>Reply</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getReply()
	 * @generated
	 * @ordered
	 */
	protected TReply reply;

	/**
	 * The cached value of the '{@link #getRethrow() <em>Rethrow</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRethrow()
	 * @generated
	 * @ordered
	 */
	protected TRethrow rethrow;

	/**
	 * The cached value of the '{@link #getScope() <em>Scope</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getScope()
	 * @generated
	 * @ordered
	 */
	protected TScope scope;

	/**
	 * The cached value of the '{@link #getSequence() <em>Sequence</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSequence()
	 * @generated
	 * @ordered
	 */
	protected TSequence sequence;

	/**
	 * The cached value of the '{@link #getThrow() <em>Throw</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getThrow()
	 * @generated
	 * @ordered
	 */
	protected TThrow throw_;

	/**
	 * The cached value of the '{@link #getValidate() <em>Validate</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getValidate()
	 * @generated
	 * @ordered
	 */
	protected TValidate validate;

	/**
	 * The cached value of the '{@link #getWait() <em>Wait</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getWait()
	 * @generated
	 * @ordered
	 */
	protected TWait wait;

	/**
	 * The cached value of the '{@link #getWhile() <em>While</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getWhile()
	 * @generated
	 * @ordered
	 */
	protected TWhile while_;

	/**
	 * The cached value of the '{@link #getOpaqueActivity() <em>Opaque Activity</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOpaqueActivity()
	 * @generated
	 * @ordered
	 */
	protected TOpaqueActivity opaqueActivity;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected TElseifImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return AbstractPackage.eINSTANCE.getTElseif();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TBooleanExpr getCondition() {
		return condition;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetCondition(TBooleanExpr newCondition, NotificationChain msgs) {
		TBooleanExpr oldCondition = condition;
		condition = newCondition;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__CONDITION, oldCondition, newCondition);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCondition(TBooleanExpr newCondition) {
		if (newCondition != condition) {
			NotificationChain msgs = null;
			if (condition != null)
				msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__CONDITION, null, msgs);
			if (newCondition != null)
				msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__CONDITION, null, msgs);
			msgs = basicSetCondition(newCondition, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__CONDITION, newCondition, newCondition));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TAssign getAssign() {
		return assign;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetAssign(TAssign newAssign, NotificationChain msgs) {
		TAssign oldAssign = assign;
		assign = newAssign;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__ASSIGN, oldAssign, newAssign);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setAssign(TAssign newAssign) {
		if (newAssign != assign) {
			NotificationChain msgs = null;
			if (assign != null)
				msgs = ((InternalEObject)assign).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__ASSIGN, null, msgs);
			if (newAssign != null)
				msgs = ((InternalEObject)newAssign).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__ASSIGN, null, msgs);
			msgs = basicSetAssign(newAssign, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__ASSIGN, newAssign, newAssign));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TCompensate getCompensate() {
		return compensate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetCompensate(TCompensate newCompensate, NotificationChain msgs) {
		TCompensate oldCompensate = compensate;
		compensate = newCompensate;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__COMPENSATE, oldCompensate, newCompensate);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCompensate(TCompensate newCompensate) {
		if (newCompensate != compensate) {
			NotificationChain msgs = null;
			if (compensate != null)
				msgs = ((InternalEObject)compensate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__COMPENSATE, null, msgs);
			if (newCompensate != null)
				msgs = ((InternalEObject)newCompensate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__COMPENSATE, null, msgs);
			msgs = basicSetCompensate(newCompensate, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__COMPENSATE, newCompensate, newCompensate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TCompensateScope getCompensateScope() {
		return compensateScope;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetCompensateScope(TCompensateScope newCompensateScope, NotificationChain msgs) {
		TCompensateScope oldCompensateScope = compensateScope;
		compensateScope = newCompensateScope;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__COMPENSATE_SCOPE, oldCompensateScope, newCompensateScope);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCompensateScope(TCompensateScope newCompensateScope) {
		if (newCompensateScope != compensateScope) {
			NotificationChain msgs = null;
			if (compensateScope != null)
				msgs = ((InternalEObject)compensateScope).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__COMPENSATE_SCOPE, null, msgs);
			if (newCompensateScope != null)
				msgs = ((InternalEObject)newCompensateScope).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__COMPENSATE_SCOPE, null, msgs);
			msgs = basicSetCompensateScope(newCompensateScope, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__COMPENSATE_SCOPE, newCompensateScope, newCompensateScope));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TEmpty getEmpty() {
		return empty;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetEmpty(TEmpty newEmpty, NotificationChain msgs) {
		TEmpty oldEmpty = empty;
		empty = newEmpty;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__EMPTY, oldEmpty, newEmpty);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEmpty(TEmpty newEmpty) {
		if (newEmpty != empty) {
			NotificationChain msgs = null;
			if (empty != null)
				msgs = ((InternalEObject)empty).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__EMPTY, null, msgs);
			if (newEmpty != null)
				msgs = ((InternalEObject)newEmpty).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__EMPTY, null, msgs);
			msgs = basicSetEmpty(newEmpty, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__EMPTY, newEmpty, newEmpty));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TExit getExit() {
		return exit;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetExit(TExit newExit, NotificationChain msgs) {
		TExit oldExit = exit;
		exit = newExit;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__EXIT, oldExit, newExit);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setExit(TExit newExit) {
		if (newExit != exit) {
			NotificationChain msgs = null;
			if (exit != null)
				msgs = ((InternalEObject)exit).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__EXIT, null, msgs);
			if (newExit != null)
				msgs = ((InternalEObject)newExit).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__EXIT, null, msgs);
			msgs = basicSetExit(newExit, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__EXIT, newExit, newExit));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TExtensionActivity getExtensionActivity() {
		return extensionActivity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetExtensionActivity(TExtensionActivity newExtensionActivity, NotificationChain msgs) {
		TExtensionActivity oldExtensionActivity = extensionActivity;
		extensionActivity = newExtensionActivity;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__EXTENSION_ACTIVITY, oldExtensionActivity, newExtensionActivity);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setExtensionActivity(TExtensionActivity newExtensionActivity) {
		if (newExtensionActivity != extensionActivity) {
			NotificationChain msgs = null;
			if (extensionActivity != null)
				msgs = ((InternalEObject)extensionActivity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__EXTENSION_ACTIVITY, null, msgs);
			if (newExtensionActivity != null)
				msgs = ((InternalEObject)newExtensionActivity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__EXTENSION_ACTIVITY, null, msgs);
			msgs = basicSetExtensionActivity(newExtensionActivity, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__EXTENSION_ACTIVITY, newExtensionActivity, newExtensionActivity));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TFlow getFlow() {
		return flow;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetFlow(TFlow newFlow, NotificationChain msgs) {
		TFlow oldFlow = flow;
		flow = newFlow;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__FLOW, oldFlow, newFlow);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFlow(TFlow newFlow) {
		if (newFlow != flow) {
			NotificationChain msgs = null;
			if (flow != null)
				msgs = ((InternalEObject)flow).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__FLOW, null, msgs);
			if (newFlow != null)
				msgs = ((InternalEObject)newFlow).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__FLOW, null, msgs);
			msgs = basicSetFlow(newFlow, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__FLOW, newFlow, newFlow));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TForEach getForEach() {
		return forEach;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetForEach(TForEach newForEach, NotificationChain msgs) {
		TForEach oldForEach = forEach;
		forEach = newForEach;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__FOR_EACH, oldForEach, newForEach);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setForEach(TForEach newForEach) {
		if (newForEach != forEach) {
			NotificationChain msgs = null;
			if (forEach != null)
				msgs = ((InternalEObject)forEach).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__FOR_EACH, null, msgs);
			if (newForEach != null)
				msgs = ((InternalEObject)newForEach).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__FOR_EACH, null, msgs);
			msgs = basicSetForEach(newForEach, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__FOR_EACH, newForEach, newForEach));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TIf getIf() {
		return if_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetIf(TIf newIf, NotificationChain msgs) {
		TIf oldIf = if_;
		if_ = newIf;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__IF, oldIf, newIf);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setIf(TIf newIf) {
		if (newIf != if_) {
			NotificationChain msgs = null;
			if (if_ != null)
				msgs = ((InternalEObject)if_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__IF, null, msgs);
			if (newIf != null)
				msgs = ((InternalEObject)newIf).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__IF, null, msgs);
			msgs = basicSetIf(newIf, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__IF, newIf, newIf));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TInvoke getInvoke() {
		return invoke;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetInvoke(TInvoke newInvoke, NotificationChain msgs) {
		TInvoke oldInvoke = invoke;
		invoke = newInvoke;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__INVOKE, oldInvoke, newInvoke);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setInvoke(TInvoke newInvoke) {
		if (newInvoke != invoke) {
			NotificationChain msgs = null;
			if (invoke != null)
				msgs = ((InternalEObject)invoke).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__INVOKE, null, msgs);
			if (newInvoke != null)
				msgs = ((InternalEObject)newInvoke).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__INVOKE, null, msgs);
			msgs = basicSetInvoke(newInvoke, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__INVOKE, newInvoke, newInvoke));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TPick getPick() {
		return pick;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetPick(TPick newPick, NotificationChain msgs) {
		TPick oldPick = pick;
		pick = newPick;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__PICK, oldPick, newPick);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPick(TPick newPick) {
		if (newPick != pick) {
			NotificationChain msgs = null;
			if (pick != null)
				msgs = ((InternalEObject)pick).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__PICK, null, msgs);
			if (newPick != null)
				msgs = ((InternalEObject)newPick).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__PICK, null, msgs);
			msgs = basicSetPick(newPick, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__PICK, newPick, newPick));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TReceive getReceive() {
		return receive;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetReceive(TReceive newReceive, NotificationChain msgs) {
		TReceive oldReceive = receive;
		receive = newReceive;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__RECEIVE, oldReceive, newReceive);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setReceive(TReceive newReceive) {
		if (newReceive != receive) {
			NotificationChain msgs = null;
			if (receive != null)
				msgs = ((InternalEObject)receive).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__RECEIVE, null, msgs);
			if (newReceive != null)
				msgs = ((InternalEObject)newReceive).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__RECEIVE, null, msgs);
			msgs = basicSetReceive(newReceive, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__RECEIVE, newReceive, newReceive));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TRepeatUntil getRepeatUntil() {
		return repeatUntil;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetRepeatUntil(TRepeatUntil newRepeatUntil, NotificationChain msgs) {
		TRepeatUntil oldRepeatUntil = repeatUntil;
		repeatUntil = newRepeatUntil;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__REPEAT_UNTIL, oldRepeatUntil, newRepeatUntil);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRepeatUntil(TRepeatUntil newRepeatUntil) {
		if (newRepeatUntil != repeatUntil) {
			NotificationChain msgs = null;
			if (repeatUntil != null)
				msgs = ((InternalEObject)repeatUntil).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__REPEAT_UNTIL, null, msgs);
			if (newRepeatUntil != null)
				msgs = ((InternalEObject)newRepeatUntil).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__REPEAT_UNTIL, null, msgs);
			msgs = basicSetRepeatUntil(newRepeatUntil, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__REPEAT_UNTIL, newRepeatUntil, newRepeatUntil));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TReply getReply() {
		return reply;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetReply(TReply newReply, NotificationChain msgs) {
		TReply oldReply = reply;
		reply = newReply;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__REPLY, oldReply, newReply);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setReply(TReply newReply) {
		if (newReply != reply) {
			NotificationChain msgs = null;
			if (reply != null)
				msgs = ((InternalEObject)reply).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__REPLY, null, msgs);
			if (newReply != null)
				msgs = ((InternalEObject)newReply).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__REPLY, null, msgs);
			msgs = basicSetReply(newReply, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__REPLY, newReply, newReply));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TRethrow getRethrow() {
		return rethrow;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetRethrow(TRethrow newRethrow, NotificationChain msgs) {
		TRethrow oldRethrow = rethrow;
		rethrow = newRethrow;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__RETHROW, oldRethrow, newRethrow);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRethrow(TRethrow newRethrow) {
		if (newRethrow != rethrow) {
			NotificationChain msgs = null;
			if (rethrow != null)
				msgs = ((InternalEObject)rethrow).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__RETHROW, null, msgs);
			if (newRethrow != null)
				msgs = ((InternalEObject)newRethrow).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__RETHROW, null, msgs);
			msgs = basicSetRethrow(newRethrow, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__RETHROW, newRethrow, newRethrow));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TScope getScope() {
		return scope;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetScope(TScope newScope, NotificationChain msgs) {
		TScope oldScope = scope;
		scope = newScope;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__SCOPE, oldScope, newScope);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setScope(TScope newScope) {
		if (newScope != scope) {
			NotificationChain msgs = null;
			if (scope != null)
				msgs = ((InternalEObject)scope).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__SCOPE, null, msgs);
			if (newScope != null)
				msgs = ((InternalEObject)newScope).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__SCOPE, null, msgs);
			msgs = basicSetScope(newScope, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__SCOPE, newScope, newScope));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TSequence getSequence() {
		return sequence;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetSequence(TSequence newSequence, NotificationChain msgs) {
		TSequence oldSequence = sequence;
		sequence = newSequence;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__SEQUENCE, oldSequence, newSequence);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSequence(TSequence newSequence) {
		if (newSequence != sequence) {
			NotificationChain msgs = null;
			if (sequence != null)
				msgs = ((InternalEObject)sequence).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__SEQUENCE, null, msgs);
			if (newSequence != null)
				msgs = ((InternalEObject)newSequence).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__SEQUENCE, null, msgs);
			msgs = basicSetSequence(newSequence, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__SEQUENCE, newSequence, newSequence));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TThrow getThrow() {
		return throw_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetThrow(TThrow newThrow, NotificationChain msgs) {
		TThrow oldThrow = throw_;
		throw_ = newThrow;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__THROW, oldThrow, newThrow);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setThrow(TThrow newThrow) {
		if (newThrow != throw_) {
			NotificationChain msgs = null;
			if (throw_ != null)
				msgs = ((InternalEObject)throw_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__THROW, null, msgs);
			if (newThrow != null)
				msgs = ((InternalEObject)newThrow).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__THROW, null, msgs);
			msgs = basicSetThrow(newThrow, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__THROW, newThrow, newThrow));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TValidate getValidate() {
		return validate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetValidate(TValidate newValidate, NotificationChain msgs) {
		TValidate oldValidate = validate;
		validate = newValidate;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__VALIDATE, oldValidate, newValidate);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setValidate(TValidate newValidate) {
		if (newValidate != validate) {
			NotificationChain msgs = null;
			if (validate != null)
				msgs = ((InternalEObject)validate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__VALIDATE, null, msgs);
			if (newValidate != null)
				msgs = ((InternalEObject)newValidate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__VALIDATE, null, msgs);
			msgs = basicSetValidate(newValidate, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__VALIDATE, newValidate, newValidate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TWait getWait() {
		return wait;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetWait(TWait newWait, NotificationChain msgs) {
		TWait oldWait = wait;
		wait = newWait;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__WAIT, oldWait, newWait);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setWait(TWait newWait) {
		if (newWait != wait) {
			NotificationChain msgs = null;
			if (wait != null)
				msgs = ((InternalEObject)wait).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__WAIT, null, msgs);
			if (newWait != null)
				msgs = ((InternalEObject)newWait).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__WAIT, null, msgs);
			msgs = basicSetWait(newWait, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__WAIT, newWait, newWait));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TWhile getWhile() {
		return while_;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetWhile(TWhile newWhile, NotificationChain msgs) {
		TWhile oldWhile = while_;
		while_ = newWhile;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__WHILE, oldWhile, newWhile);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setWhile(TWhile newWhile) {
		if (newWhile != while_) {
			NotificationChain msgs = null;
			if (while_ != null)
				msgs = ((InternalEObject)while_).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__WHILE, null, msgs);
			if (newWhile != null)
				msgs = ((InternalEObject)newWhile).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__WHILE, null, msgs);
			msgs = basicSetWhile(newWhile, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__WHILE, newWhile, newWhile));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TOpaqueActivity getOpaqueActivity() {
		return opaqueActivity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetOpaqueActivity(TOpaqueActivity newOpaqueActivity, NotificationChain msgs) {
		TOpaqueActivity oldOpaqueActivity = opaqueActivity;
		opaqueActivity = newOpaqueActivity;
		if (eNotificationRequired()) {
			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__OPAQUE_ACTIVITY, oldOpaqueActivity, newOpaqueActivity);
			if (msgs == null) msgs = notification; else msgs.add(notification);
		}
		return msgs;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setOpaqueActivity(TOpaqueActivity newOpaqueActivity) {
		if (newOpaqueActivity != opaqueActivity) {
			NotificationChain msgs = null;
			if (opaqueActivity != null)
				msgs = ((InternalEObject)opaqueActivity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__OPAQUE_ACTIVITY, null, msgs);
			if (newOpaqueActivity != null)
				msgs = ((InternalEObject)newOpaqueActivity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - AbstractPackage.TELSEIF__OPAQUE_ACTIVITY, null, msgs);
			msgs = basicSetOpaqueActivity(newOpaqueActivity, msgs);
			if (msgs != null) msgs.dispatch();
		}
		else if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AbstractPackage.TELSEIF__OPAQUE_ACTIVITY, newOpaqueActivity, newOpaqueActivity));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
		switch (featureID) {
			case AbstractPackage.TELSEIF__CONDITION:
				return basicSetCondition(null, msgs);
			case AbstractPackage.TELSEIF__ASSIGN:
				return basicSetAssign(null, msgs);
			case AbstractPackage.TELSEIF__COMPENSATE:
				return basicSetCompensate(null, msgs);
			case AbstractPackage.TELSEIF__COMPENSATE_SCOPE:
				return basicSetCompensateScope(null, msgs);
			case AbstractPackage.TELSEIF__EMPTY:
				return basicSetEmpty(null, msgs);
			case AbstractPackage.TELSEIF__EXIT:
				return basicSetExit(null, msgs);
			case AbstractPackage.TELSEIF__EXTENSION_ACTIVITY:
				return basicSetExtensionActivity(null, msgs);
			case AbstractPackage.TELSEIF__FLOW:
				return basicSetFlow(null, msgs);
			case AbstractPackage.TELSEIF__FOR_EACH:
				return basicSetForEach(null, msgs);
			case AbstractPackage.TELSEIF__IF:
				return basicSetIf(null, msgs);
			case AbstractPackage.TELSEIF__INVOKE:
				return basicSetInvoke(null, msgs);
			case AbstractPackage.TELSEIF__PICK:
				return basicSetPick(null, msgs);
			case AbstractPackage.TELSEIF__RECEIVE:
				return basicSetReceive(null, msgs);
			case AbstractPackage.TELSEIF__REPEAT_UNTIL:
				return basicSetRepeatUntil(null, msgs);
			case AbstractPackage.TELSEIF__REPLY:
				return basicSetReply(null, msgs);
			case AbstractPackage.TELSEIF__RETHROW:
				return basicSetRethrow(null, msgs);
			case AbstractPackage.TELSEIF__SCOPE:
				return basicSetScope(null, msgs);
			case AbstractPackage.TELSEIF__SEQUENCE:
				return basicSetSequence(null, msgs);
			case AbstractPackage.TELSEIF__THROW:
				return basicSetThrow(null, msgs);
			case AbstractPackage.TELSEIF__VALIDATE:
				return basicSetValidate(null, msgs);
			case AbstractPackage.TELSEIF__WAIT:
				return basicSetWait(null, msgs);
			case AbstractPackage.TELSEIF__WHILE:
				return basicSetWhile(null, msgs);
			case AbstractPackage.TELSEIF__OPAQUE_ACTIVITY:
				return basicSetOpaqueActivity(null, msgs);
		}
		return super.eInverseRemove(otherEnd, featureID, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case AbstractPackage.TELSEIF__CONDITION:
				return getCondition();
			case AbstractPackage.TELSEIF__ASSIGN:
				return getAssign();
			case AbstractPackage.TELSEIF__COMPENSATE:
				return getCompensate();
			case AbstractPackage.TELSEIF__COMPENSATE_SCOPE:
				return getCompensateScope();
			case AbstractPackage.TELSEIF__EMPTY:
				return getEmpty();
			case AbstractPackage.TELSEIF__EXIT:
				return getExit();
			case AbstractPackage.TELSEIF__EXTENSION_ACTIVITY:
				return getExtensionActivity();
			case AbstractPackage.TELSEIF__FLOW:
				return getFlow();
			case AbstractPackage.TELSEIF__FOR_EACH:
				return getForEach();
			case AbstractPackage.TELSEIF__IF:
				return getIf();
			case AbstractPackage.TELSEIF__INVOKE:
				return getInvoke();
			case AbstractPackage.TELSEIF__PICK:
				return getPick();
			case AbstractPackage.TELSEIF__RECEIVE:
				return getReceive();
			case AbstractPackage.TELSEIF__REPEAT_UNTIL:
				return getRepeatUntil();
			case AbstractPackage.TELSEIF__REPLY:
				return getReply();
			case AbstractPackage.TELSEIF__RETHROW:
				return getRethrow();
			case AbstractPackage.TELSEIF__SCOPE:
				return getScope();
			case AbstractPackage.TELSEIF__SEQUENCE:
				return getSequence();
			case AbstractPackage.TELSEIF__THROW:
				return getThrow();
			case AbstractPackage.TELSEIF__VALIDATE:
				return getValidate();
			case AbstractPackage.TELSEIF__WAIT:
				return getWait();
			case AbstractPackage.TELSEIF__WHILE:
				return getWhile();
			case AbstractPackage.TELSEIF__OPAQUE_ACTIVITY:
				return getOpaqueActivity();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case AbstractPackage.TELSEIF__CONDITION:
				setCondition((TBooleanExpr)newValue);
				return;
			case AbstractPackage.TELSEIF__ASSIGN:
				setAssign((TAssign)newValue);
				return;
			case AbstractPackage.TELSEIF__COMPENSATE:
				setCompensate((TCompensate)newValue);
				return;
			case AbstractPackage.TELSEIF__COMPENSATE_SCOPE:
				setCompensateScope((TCompensateScope)newValue);
				return;
			case AbstractPackage.TELSEIF__EMPTY:
				setEmpty((TEmpty)newValue);
				return;
			case AbstractPackage.TELSEIF__EXIT:
				setExit((TExit)newValue);
				return;
			case AbstractPackage.TELSEIF__EXTENSION_ACTIVITY:
				setExtensionActivity((TExtensionActivity)newValue);
				return;
			case AbstractPackage.TELSEIF__FLOW:
				setFlow((TFlow)newValue);
				return;
			case AbstractPackage.TELSEIF__FOR_EACH:
				setForEach((TForEach)newValue);
				return;
			case AbstractPackage.TELSEIF__IF:
				setIf((TIf)newValue);
				return;
			case AbstractPackage.TELSEIF__INVOKE:
				setInvoke((TInvoke)newValue);
				return;
			case AbstractPackage.TELSEIF__PICK:
				setPick((TPick)newValue);
				return;
			case AbstractPackage.TELSEIF__RECEIVE:
				setReceive((TReceive)newValue);
				return;
			case AbstractPackage.TELSEIF__REPEAT_UNTIL:
				setRepeatUntil((TRepeatUntil)newValue);
				return;
			case AbstractPackage.TELSEIF__REPLY:
				setReply((TReply)newValue);
				return;
			case AbstractPackage.TELSEIF__RETHROW:
				setRethrow((TRethrow)newValue);
				return;
			case AbstractPackage.TELSEIF__SCOPE:
				setScope((TScope)newValue);
				return;
			case AbstractPackage.TELSEIF__SEQUENCE:
				setSequence((TSequence)newValue);
				return;
			case AbstractPackage.TELSEIF__THROW:
				setThrow((TThrow)newValue);
				return;
			case AbstractPackage.TELSEIF__VALIDATE:
				setValidate((TValidate)newValue);
				return;
			case AbstractPackage.TELSEIF__WAIT:
				setWait((TWait)newValue);
				return;
			case AbstractPackage.TELSEIF__WHILE:
				setWhile((TWhile)newValue);
				return;
			case AbstractPackage.TELSEIF__OPAQUE_ACTIVITY:
				setOpaqueActivity((TOpaqueActivity)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case AbstractPackage.TELSEIF__CONDITION:
				setCondition((TBooleanExpr)null);
				return;
			case AbstractPackage.TELSEIF__ASSIGN:
				setAssign((TAssign)null);
				return;
			case AbstractPackage.TELSEIF__COMPENSATE:
				setCompensate((TCompensate)null);
				return;
			case AbstractPackage.TELSEIF__COMPENSATE_SCOPE:
				setCompensateScope((TCompensateScope)null);
				return;
			case AbstractPackage.TELSEIF__EMPTY:
				setEmpty((TEmpty)null);
				return;
			case AbstractPackage.TELSEIF__EXIT:
				setExit((TExit)null);
				return;
			case AbstractPackage.TELSEIF__EXTENSION_ACTIVITY:
				setExtensionActivity((TExtensionActivity)null);
				return;
			case AbstractPackage.TELSEIF__FLOW:
				setFlow((TFlow)null);
				return;
			case AbstractPackage.TELSEIF__FOR_EACH:
				setForEach((TForEach)null);
				return;
			case AbstractPackage.TELSEIF__IF:
				setIf((TIf)null);
				return;
			case AbstractPackage.TELSEIF__INVOKE:
				setInvoke((TInvoke)null);
				return;
			case AbstractPackage.TELSEIF__PICK:
				setPick((TPick)null);
				return;
			case AbstractPackage.TELSEIF__RECEIVE:
				setReceive((TReceive)null);
				return;
			case AbstractPackage.TELSEIF__REPEAT_UNTIL:
				setRepeatUntil((TRepeatUntil)null);
				return;
			case AbstractPackage.TELSEIF__REPLY:
				setReply((TReply)null);
				return;
			case AbstractPackage.TELSEIF__RETHROW:
				setRethrow((TRethrow)null);
				return;
			case AbstractPackage.TELSEIF__SCOPE:
				setScope((TScope)null);
				return;
			case AbstractPackage.TELSEIF__SEQUENCE:
				setSequence((TSequence)null);
				return;
			case AbstractPackage.TELSEIF__THROW:
				setThrow((TThrow)null);
				return;
			case AbstractPackage.TELSEIF__VALIDATE:
				setValidate((TValidate)null);
				return;
			case AbstractPackage.TELSEIF__WAIT:
				setWait((TWait)null);
				return;
			case AbstractPackage.TELSEIF__WHILE:
				setWhile((TWhile)null);
				return;
			case AbstractPackage.TELSEIF__OPAQUE_ACTIVITY:
				setOpaqueActivity((TOpaqueActivity)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case AbstractPackage.TELSEIF__CONDITION:
				return condition != null;
			case AbstractPackage.TELSEIF__ASSIGN:
				return assign != null;
			case AbstractPackage.TELSEIF__COMPENSATE:
				return compensate != null;
			case AbstractPackage.TELSEIF__COMPENSATE_SCOPE:
				return compensateScope != null;
			case AbstractPackage.TELSEIF__EMPTY:
				return empty != null;
			case AbstractPackage.TELSEIF__EXIT:
				return exit != null;
			case AbstractPackage.TELSEIF__EXTENSION_ACTIVITY:
				return extensionActivity != null;
			case AbstractPackage.TELSEIF__FLOW:
				return flow != null;
			case AbstractPackage.TELSEIF__FOR_EACH:
				return forEach != null;
			case AbstractPackage.TELSEIF__IF:
				return if_ != null;
			case AbstractPackage.TELSEIF__INVOKE:
				return invoke != null;
			case AbstractPackage.TELSEIF__PICK:
				return pick != null;
			case AbstractPackage.TELSEIF__RECEIVE:
				return receive != null;
			case AbstractPackage.TELSEIF__REPEAT_UNTIL:
				return repeatUntil != null;
			case AbstractPackage.TELSEIF__REPLY:
				return reply != null;
			case AbstractPackage.TELSEIF__RETHROW:
				return rethrow != null;
			case AbstractPackage.TELSEIF__SCOPE:
				return scope != null;
			case AbstractPackage.TELSEIF__SEQUENCE:
				return sequence != null;
			case AbstractPackage.TELSEIF__THROW:
				return throw_ != null;
			case AbstractPackage.TELSEIF__VALIDATE:
				return validate != null;
			case AbstractPackage.TELSEIF__WAIT:
				return wait != null;
			case AbstractPackage.TELSEIF__WHILE:
				return while_ != null;
			case AbstractPackage.TELSEIF__OPAQUE_ACTIVITY:
				return opaqueActivity != null;
		}
		return super.eIsSet(featureID);
	}

} //TElseifImpl
